{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Alessandro Parisi \n",
      "last updated: 2019-02-18 \n",
      "\n",
      "CPython 3.5.4\n",
      "IPython 6.1.0\n",
      "\n",
      "numpy 1.16.1\n",
      "pandas 0.20.3\n",
      "matplotlib 2.0.2\n",
      "sklearn 0.20.0\n",
      "seaborn 0.8.0\n"
     ]
    }
   ],
   "source": [
    "%load_ext watermark\n",
    "%watermark -a \"Alessandro Parisi\" -u -d -v -p numpy,pandas,matplotlib,sklearn,seaborn\n",
    "# to install watermark launch 'pip install watermark' at command line\n",
    "import warnings \n",
    "warnings.simplefilter('ignore')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt  \n",
    "\n",
    "df = pd.read_csv('../datasets/sms_spam_svm.csv')\n",
    "\n",
    "y = df.iloc[:, 0].values\n",
    "y = np.where(y == 'spam', -1, 1)\n",
    "\n",
    "X = df.iloc[:, [1, 2]].values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "X_train, X_test, y_train, y_test = train_test_split(\n",
    "         X, y, test_size=0.3, random_state=0)\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.svm import SVC\n",
    "\n",
    "svm = SVC(kernel='linear', C=1.0, random_state=1)\n",
    "svm.fit(X_train, y_train)\n",
    "\n",
    "y_pred = svm.predict(X_test)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XmYFOW1+PHv6RmYYRkE2RWDJlchXjWYAMGroiCLUWPE\n3It63X4JioIr0SSAGjeumkUhapiI4r0aDeo1oMYlMiAE41URV4iiJKCIsirCDDMDzPT5/fFWM9U9\nPTM1M71UT5/P8/TTXdXVVW8vVaer6tR5RVUxxhhjwiaS7QYYY4wxyViAMsYYE0oWoIwxxoSSBShj\njDGhZAHKGGNMKFmAMsYYE0ppD1AiUiAib4vIs97wTSLymYi8491OSXcbjDHG5J7CDCzjKuADoItv\n3ExV/U0Glm2MMSZHpXUPSkT6AacCD6RzOcYYY9qedO9BzQJ+BpQkjL9CRC4AVgDXqOr2xBeKyERg\nIkBRUafv9O49MM1NNcYYky7r17+5TVV7Nuc1kq5SRyJyGnCKqk4WkROBa1X1NBHpDWwDFLgV6Kuq\nP25sXv37D9brrluRlnYaY4xJv0sukTdVdXBzXpPOPahjgdO9JIhioIuIPKKq58UmEJH7gWfT2AZj\njDE5Km0BSlWnAdMAfHtQ54lIX1Xd6E02DliVrjak2hm3DaFD+ZZ646tKevHU9Dey0CJjjGm7MpHF\nl+hXIjIId4jvY+CSLLShRTqUb6G6c/1DqMmCljHGmNbJSIBS1aXAUu/x+ZlYpjHGpENh4V6+/vUN\ndOxYne2mhFJlZTFr1/ajpqZdq+eVjT0oY4zJWV//+gYOOqiEkpKDEZFsNydUVJXy8i+ADXz00SGt\nnp+VOjLGmGbo2LGakpLuFpySEBFKSrqnbO/SApQxxjSTBaeGpfKzsUN8zVBV0qvBLD5jjDGpZQGq\nGSyV3BgTJmvWrObKK3/EypVvMW3af3HZZddmu0kpZQHKGGNyVNeu+3PbbXfzwgtPZbspaZFzAUoV\n/Ic4E4eNMSYsuo4ZQmRb/dMC0R69+Gph64/I9OzZi549e1FW9lyr5xVGORWgli2D3bth1CgXlFRh\n0SIoKoLhw7PdOmOMiRfZtoVo9/oX9ycLWqa+nMniU3XBaflyF5RiwWn5cjc+TTVvjTHGZEnO7EGJ\nuD0ncEFp+XL3eOjQuj0qY4xp6+bO/R2PPHI/APPmPU+fPgdkuUXpkzMBCuqCVCw4gQUnY0x+mTDh\nMiZMuCzbzciInApQscN6fosW1Q9SlkhhjMkHmzdvYsyYwZSX7yQSiTBnziz+9rf3KSnpku2mpUTO\nBCj/OafYYb3YMNQFKUukMMaERbRHrwaz+FKhd+8+vPvuhpTMK4xyJkCJuCDjP+cUOydVVFQXjGKJ\nFBAfxIYOtT0pY0xmpSKVPJ/lTIACtwfkDzKxIJU4DJZIYYwxuS5n0sxjEoNMsuFYkIqx4GSMMbkn\n5wJUUxpKpLDrpIwxJrekPUCJSIGIvC0iz3rD+4tImYis8e67pWpZiYkU06e7e//FvamWOE8LhMYY\nkxqZ2IO6CvjANzwVWKyqhwKLveGUaCiRYujQukSKVFq2LD7wxQLksmWpXY4xxuSjtAYoEekHnAo8\n4Bv9A+Ah7/FDwBmpXObw4ckTJ1KdYm6ll4wx2XLVVT/m8MN7MXz4EdluSlqlew9qFvAzIOob11tV\nN3qPNwG9U73QphIpUrWM2N7Z8uVw223x12hZUoYxBtJzGuDss/8fjz32l9bPKOTSFqBE5DRgi6q+\n2dA0qqpA0q9LRCaKyAoRWVFRsTVdzWwVyxg0xjTm4YehtDT+NEBpqRvfGsccM5yuXfdvfQNDLp17\nUMcCp4vIx8BjwEgReQTYLCJ9Abz7pHXnVXWOqg5W1cGdO9cvV99aqfhXYxmDxpiGqEJFBSxYUBek\nSkvdcEWFbSeCSNuFuqo6DZgGICInAteq6nki8mvgQuAO7/7pdLWhITun3caeqiiXF9+/rwLFvdUX\n075DhC63Tw80j6Cll4wx+UkEJk1yjxcscDeAcePceNs+NC0b10HdAYwWkTXAKG84Y1RhT1WUJ2rP\nZKZeTVWnnszUq3mi9kz2VEUD/6vJdMagMSb3+INUjAWn4DJS6khVlwJLvcdfACdlYrnJiMDlxfez\nVzuxoHIsCyrHAjCu44tcLvfzmFwfeF5NlV4yxuS32GE9v9JSC1JBtblKEkGIwKSSR+PGTSp5tEU/\nmExkDBpjco//nNO4cbBwobv3n5NqqUsuOYdTTjmGf/zjQ771rX48+ujc1DU8RHKqWGwy0ShEIg0P\nJ6MKpeXnxo0rLT+XKTKryeVZX1PGmCBEoHPn+HNOscN9nTu3brtx333zUtPIDGjNNjKnA9TCKc9T\nuacd8zpfRCTigtM5FQ/Qsf1exsw8JelrYgkRC2rHMq7ji0wqeZTS8nNZUDmWdgW76N7Ih2l9TRlj\nmuOCC+qfBsjVw3tdN75PJFpTb3w0UshXfQ8HoLw8fs/Qv41siZw9xBeNQuWediytPY7x1Q9T2bEn\n46sfZmntcVTuaUc0mvx1ItC+Q4TxBfOZIrPosGsrU2QW4wvm075DpMEfjlWOMMa0RFs5DRCJ1hCN\nFNa7+YOWKuzaBdXV9beRLZGze1CRCMzrfBHjqx/m5d1DOeSzlwE4vmg584ov4vHIJw2+tsvt01El\nLiGisT0nsL6mjDGmKV28nuY3b3bVdaBuG/nkk82fX87uQYELUg/3uCZu3MM9rmnyHBS07F+NVY4w\nxpjGxYJUTGu2kTkdoKJROH/bnXHjzt92Z73De8mqRrSkkoRVjjDGmMbt3Bk/3JptZM4GqGgUjt35\nAkur/43jipaz7sDjOa5oOUur/41jd76wL0gl6xJjzhx3a043Gdnoa8oYY3LJzp3uHFRRUf1tZEvk\nbIASgUiB0IFKhvMyHXZtdfdUEimQfVl2iYkNZWWwdi2sW+ceB012sMoRxpgw2LHjKx58cHaLX3/f\nfbOorKxs9utiCRGx27Llr/LaWyuIRupSGUSgUycoLq6/jWwJ0Rz469+//2C97roV9caruovfVvie\nGjwYxoypCxj+ABQzZIi7f+ONunFBkx3sOihj8tugQR9wyCHfzNry16//mPPOO41ly1a16PXf+c7B\nLFy4gu7de7SqHb/61U106tSZyy67tt5z69Z9wDvvuM8oto285BJ5U1UHN2cZObsHBe5NjxkTP84f\nnGLTJCY2jB7tbn5BT+S1lZRRY0xumjFjKh9//E9GjBjETTf9FIB77/01Y8YM4YQTjuKXv7wRgF27\ndvGf/3kqJ574LYYPP4Knnnqc+++/m02bPufMM0cwbtyIevO+9dapHHfc4ZxwwlHceKMLPNu2beVH\nP/ohY8YMYcyYIbz++iusX/8xDz30e+67byYjRgzitddebrC9rdlG5myaOTSctOAPNsmmKSurP6/E\n1xljTBhdf/0drF69iiVL3gFgyZKFrFu3hhdfXI6qcv75p/Pqq8vYtm0rffocwB//+BwAO3fuoEuX\n/fj97+9i/vwl9fagvvzyC55/fgH/93+rERF27PjKW95VXHLJFIYNO44NG9Zz1lljeeWVD7jwwksb\n3INKlZwLULHdxSDdXUD9acrKYPFiN4+RI92elHWTYfJNSw9V2yHu8Fm6dCFLly5k5MijAdi1q4K1\na9cwbNjx3HTTNdxyy88ZM+Y0hg07vtH5dOmyH0VFxVx99QRGjz6NMWNOA2DZskV8+OH7+6YrL99J\nRUVF+t6QT04FqMRSQ0VF0LUrtG8ffyjPn7SQmNgwerRLkAD3uKHXGdNWtbRkl5X6CidV5corp3Hh\nhZfsKzUUuxZp0aK3+POfn2fGjOs58cSTuPbaXzQ4n8LCQl58cTkvv7yYP//5SR588F7mz3+JaDTK\nCy+8RnFxcYbeUZ2cOQeVLCNv927Yvh327Kn7JzdqVPzKMnx4/F6RCEyc6G6J3WTYSmbaupaW7LJS\nX+HRuXMJFRXl+4ZHjBjLvHkPUlFRgSqsXfsZ69ZtYdOmz6mp6cjo0edx0UU/5b333kr6+piKigp2\n7tzBqFGncOutM/n7398F4MQTx/DAA/fsm27lyncanU8q5cweVEOlhr773foBKNlrGxtuaJwxbU1L\nS3ZZqa/w2H//7gwdeizDhx/ByJHf46abfs2aNR9w6qnHAFBU1JkZMx5h/fp/MHPmTyksjFBU1I5f\n/cp1THX++RM5++yT6dPnABYsWLJvvrt2lXPBBT+guroaUG6++S4A/uu/7mbq1Ms44YSjqK2tYdiw\n4fzmN79n7Njv8+Mf/zt/+cvT3H77PU0eQmyJnEszV62r8QTuYjBbOYxpnpauR7b+ZT/NPIiNG+se\n9+2b+eX708xj2nyauZUaMqb1Wroe2fqXGxJLDSUO55K0HeITkWJgGVDkLedJVb1RRG4CLga2epNO\nV9Xnm5pfkKy9fPsnZ0xztXQ9svUvN8RKDXXq5BIlYsNQv4hrLkjnOajdwEhVrRCRdsDfROQF77mZ\nqvqb5sysoVJDYNl3xgTV0vXI1r94qoqE8E3HSg3FglHsPpNNTeVpo7QFKHWtjCXLt/NurWr58OH1\ne6e0f27GNE9L1yNb/5zKymLKy7+gpKR76IJUSUn9cZncc1JVysu/oLIyNSnpac3iE5EC4E3gX4Df\nqerrIvI94AoRuQBYAVyjqtuTvHYiMBFg//2/5hufOF26Wm9M29XS9cjWP1i7th+wgY4dtzY5bT6q\nrCz2PqPWS2uAUtVaYJCIdAUWiMgRQClwK25v6lbgTuDHSV47B5gDLosvNj4aJa5DwtpaKCjwv87d\nN3W1e+J8EoeNacuCVIRoy1UjWvr+AWpq2vHRR4c0+DqTOhm5DkpVvxKRJcDJ/nNPInI/8GzQ+cyd\n6/q6nzTJBZOlS93toINgwoS6vp6g7kLcZFe7J84nGoXSUlcifsKE1L1vY8IoSEWIndNuY09VlMuL\n7983zb3VF9O+Q4Qut0/P7htopSDvP9k0QbYtJrXSts8gIj29PSdEpAMwGlgtIv6s/HFAoJrx0agL\nKqtXu2BSW+uC06ZN8OmnbriszJUxWru24b6eEucTC06rV7vxib3xGtOWBKkIoQp7qqI8UXsmM/Vq\nqjr1ZKZezRO1Z7KnKprTaeVB33+q+pEzrZO2C3VF5CjgIaAAFwifUNVbROQPwCDcIb6PgUtUdWOD\nM6LuQl1/MInp3t0d4osdngvS11Oy+QwcWLdHZUxblqyPtMR15Oyp/ZmpV7Ogcuy+acZ1fJEpMovH\n7vgkwy1OrSDvP9X9yJmQXairqu+p6tGqepSqHqGqt3jjz1fVI73xpzcVnOIaG3FBxO+GG+KDSpC+\nnpLNx4KTyRfJ+khLXEdEYFLJo3HTTCp5tE1siIO+/1T2I2daJqc2ybE9H79bb40/LFdWVr+/p8Sr\n3ZPNJ3a4z5i2LkhFCFUoLT83bprS8nPbxKGsoO8/WT9yTW1bTGrlTLFY/2G5gQPh0ktdcNq0Cfr0\ncTXBFi92N4CTTkre15Nq/HwmTaobLi21PSnTtgXtR+3e6otZUDuWcR1fZFLJo5SWn8uCyrG0K9hF\n9xzOXGttP3IQv215/fW61zXnM7Es4mByJkBFIq5sR/fuLjgVFMCBB8KXX7osmoIC9yN57TX3uKG+\nnkRctp7/nFMsSBUX24/EtG1BK0K07xBhfNV8Lpf7kV0wRWbRrmAX7TtEcjY4QfD3n6wfuY/+/AHR\nGmXu4u8RWQJnR+GcigfQ5/cio08J3AbLIg4uZwKUKgwe7ALQSy+5fzF79kBNjbtSOhp1/3AikbqT\nmZD8avcJE+L/scSClAUnkw+CVITocvt0VOExuX7fuFzec/IL8v4TpwE4q+BP/K+eySyuZlInt1f5\nuRzIeJ2P6imBPpvELGL/EZyBA21PKlFOdbeRLLOma1fXaWHsx2FZNcaYdEhVZmO+ZhGHKosvHZJl\n1kyaFB+MLDgZY9IhVZmNlkUcXE59JLEL5vxmz47PokllVk3ifILOt6WvMyZTEn+TiRms9putL1lm\n4+wd59bLEG5Ksizi2bPjX9vQ5x9k29KWtj85dQ5qzhx3JffIkW5PafZseP99l8V3/fXuHFSq+qcJ\nUg4lla8zJhXOuG0IHcq31BtfVdKLp6a7K0wTf6M7pt7GkvIhjG2/mB8Xz2tTZY1SJfaZ+DMbR236\nA3eVX0Rh0S56al2GcGPJDonZyJMmwYwZbjs2ezZMnuy+k03TZtFt9yZ+VDxv32v/u/octhf1oc/t\nVzerRFMub39yag8K4ovBFhZCu3bQq1fd4b+hQ1vfP02QciipfJ0xqdKhfAvVnXvWu8WCVuJvNBqF\nJeVDWFp7HM9Hv0dlx7ZT1iiVRLzMxoL5TJFZFJVv5UDdQLUW8cfa8XGXrzRWMi0Sic8iFoFhw6B9\ne/jqKze8aBE8vXMk29v3pqqT+/6qOvVke/vePL1zZLNKNOX69ifnkiTKyuJLjQweDGPGxJcoScU5\nqCDlUFL5OmNS4Zxp/anu3LPe+OKKrcy73Z3IT/yN7v/Ze/Rqt51NtT33/UbbSlmjVPNvX6JRt9fz\n4Yd1zwdNdvBn6yXbrl2ydQYX9XiqXjX1B7adwX096zIrg5RoCsv2Jy+SJBJLjfiDU2yaVC2rqXIo\nqXydMZmS+BsV4OEe18T9RttKWaNUSyyZNnly/PNBkx380yTbrsWqyCcu+/Li++PGBSnRlMvbn5wK\nUEFKlGR7WZlsozEtkZhspMAF2+6M+42Wlp9riRNNiO1B+SUmOzT22hhVWLgw/vl7qy+mtjZ+XG2t\nG+8XpERTLm9/cipJoqkSJan6l9DSZWWyjca0RLJko6ev2Mzi6hP5l8J1LOn9n/y+4lweKD+b1+UI\nTvcORanCjsum0SW6nYnyQNw8awuL+O97dmXpHWVHNOqSGzZtgsMPd3tSsaStGTNc0lZDe1ILpzxP\n5Z52zOt8ESJwd+XFLNp9Bf3bf85ld3+TRYvgzicn8chnZ/IOR1NQ4ILTIN5mM70Z2YwSTbm+/cmZ\nPaiGSpSkIikiVcvKZBuNSaaqpBfFFVvr3apKesVN5082KmgndKCSw1hDh11buZpZHCmrWKn/yuLF\ndX+8nqj9ITsj3agpKKK2sO5WULM7C+80u0RcAGrfHg47zA0fdpgbjkQaXtejUajc046ltccxvvph\nqjr15I+146miIwdGN6Dq/jj0ZjP/5BucyZ+IRuFM/sQ/+Qa92czIkcm3LW1x+5NTSRKQ2W6oW7qs\nttxVtsl9QZKNYqXD/Cfbr/j0p1xZOLveb7mgZjcPlNakv+Ehk+xzHDKkrg5oQ876eX/GVz/My7uH\n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\nrJAOei0SAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xd9c464f4a8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Thanks to Sebastian Raschka for 'plot_decision_regions'\n",
    "# https://github.com/rasbt/python-machine-learning-book\n",
    "from defs import plot_decision_regions\n",
    "\n",
    "X_combined = np.vstack((X_train, X_test))\n",
    "y_combined = np.hstack((y_train, y_test))\n",
    "\n",
    "plot_decision_regions(X_combined, y_combined,\n",
    "                      classifier=svm, test_idx=range(-15, 15))\n",
    "plt.xlabel('suspect words')\n",
    "plt.ylabel('spam or ham')\n",
    "plt.legend(loc='upper right')\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Misclassified samples: 7\n",
      "Accuracy: 0.84\n"
     ]
    }
   ],
   "source": [
    "from sklearn.metrics import accuracy_score\n",
    "\n",
    "print('Misclassified samples: %d' % (y_test != y_pred).sum())\n",
    "print('Accuracy: %.2f' % accuracy_score(y_test, y_pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Py35",
   "language": "python",
   "name": "py35"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
